package com.net.oil.util.glide;
/*
 * Created by lch on 2018/3/13 0013.
 */

import android.content.Context;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.Priority;
import com.bumptech.glide.load.engine.DiskCacheStrategy;

public class GlideUtil {

    private static GlideUtil instance;

    private GlideUtil(){}

    public static GlideUtil getInstance(){
        if (instance == null){
            instance = new GlideUtil();
        }
        return instance;
    }

    /**
     * 常规加载图片
     * @param context    上下文
     * @param imageView  图片容器
     * @param imgUrl     图片地址
     */
    public void loadImage(Context context, ImageView imageView,
                          String imgUrl, int errorImg) {
        Glide.with(context)
                .load(imgUrl)
                .error(errorImg)
                .crossFade()
                .priority(Priority.NORMAL) //下载的优先级
                .diskCacheStrategy(DiskCacheStrategy.SOURCE) //缓存策略
                .into(imageView);
    }

    /**
     * 加载圆图
     * @param context       上下文
     * @param imageView     imageView
     * @param imgUrl        url
     */
    public void loadCircleImage(Context context, ImageView imageView, String imgUrl, int errorImg) {
        Glide.with(context)
                .load(imgUrl)
                .error(errorImg)
                .crossFade()
                .priority(Priority.NORMAL) //下载的优先级
                .diskCacheStrategy(DiskCacheStrategy.SOURCE) //缓存策略
                .bitmapTransform(new GlideCircleTransform(context))
                .into(imageView);
    }

    /**
     * 加载圆图
     * 不使用磁盘缓存
     * @param context       上下文
     * @param imageView     imageView
     * @param imgUrl        url
     */
    public void loadCircleImageNoCache(Context context, ImageView imageView, String imgUrl, int errorImg) {
        Glide.with(context)
                .load(imgUrl)
                .error(errorImg)
                .crossFade()
                .priority(Priority.NORMAL) //下载的优先级
                .diskCacheStrategy( DiskCacheStrategy.NONE )
                .skipMemoryCache( true )
                .bitmapTransform(new GlideCircleTransform(context))
                .into(imageView);
    }

    /**
     * 清除磁盘缓存
     * @param context   上下文
     */
    public void clearDiskCache(final Context context) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                Glide.get(context).clearDiskCache();//清理磁盘缓存 需要在子线程中执行
            }
        }).start();
    }

    /**
     * 清除内存缓存
     * @param context   上下文
     */
    public void clearMemory(Context context) {
        Glide.get(context).clearMemory();//清理内存缓存  可以在UI主线程中进行
    }
}
